package com.llkj.contractmanagement.utils;

import android.content.Context;
import android.util.DisplayMetrics;

/**
 * 获取屏幕信息
 * 
 * @author zhang.zk
 * 
 */
public class ScreenUtil {
	
	private static float defaultDensity = 1.5f;
	private static float mDensity = DisplayMetrics.DENSITY_DEFAULT;

	public static void setDensity(float density) {
		mDensity = density;
	}

	public static float getDensity() {
		return mDensity;
	}

	/**
	 * 获取屏幕信息
	 * 
	 * @param ctx
	 * @return
	 */
	public static DisplayMetrics getDisplayMetrics(Context ctx) {
		// Display d = ctx.getWindowManager().getDefaultDisplay();
		// DisplayMetrics outMetrics = new DisplayMetrics();
		// d.getMetrics(outMetrics);
		// 更简单的方式?
		DisplayMetrics outMetrics = ctx.getResources().getDisplayMetrics();
		return outMetrics;
	}
	
	/**
	 * 获取屏幕宽度
	 * 
	 * @param context
	 *            上下文
	 * */
	public static int getScreenWidth(Context context) {
		DisplayMetrics dm = new DisplayMetrics();
		dm = context.getResources().getDisplayMetrics();
		int screenWidth = dm.widthPixels;
		return screenWidth;
	}

	/**
	 * 获取屏幕高度
	 * 
	 * @param context
	 *            上下文
	 * */
	public static int getScreenHeight(Context context) {
		DisplayMetrics dm = new DisplayMetrics();
		dm = context.getResources().getDisplayMetrics();
		int screenHeight = dm.heightPixels;
		return screenHeight;
	}

	/**
	 * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
	 * 
	 * @param context
	 *            上下文
	 * @param pxValue
	 *            px值
	 */
	public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}

	/**
	 * 根据手机的分辨率从 dp 的单位 转成为 px(像素) * @param context 上下文
	 * 
	 * @param dpValue
	 *            dp值
	 */
	public static int dip2px(Context context, float dpValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}
	
	public static int px2sp(Context context, float pxValue) {
		final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
		return (int) (pxValue / fontScale + 0.5f);
	}
	
	public static int sp2px(Context context, float spValue) {
		final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
		return (int) (spValue * fontScale + 0.5f);
	}
}
